package org.ccahouse.ccatrain.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.ccahouse.ccacommons.common.RestResult;
import org.ccahouse.ccatrain.dto.UserDto;
import org.ccahouse.ccatrain.dto.UserListDto;
import org.ccahouse.ccatrain.dto.UserListPageDto;
import org.ccahouse.ccatrain.entity.User;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author kevin
 * @since 2020-07-04
 */
public interface IUserService {


    RestResult getUserList(UserListDto param);

    /**
     * 根据参数分页查询用户信息
     *
     * @param param
     * @return
     */
    RestResult getUserPage(UserListPageDto param);

    /**
     * 保存用户信息
     *
     * @param user
     * @return
     */
    RestResult saveUser(UserDto user);

    /**
     * 批量保存信息
     *
     * @param users
     * @return
     */
    RestResult saveUsers(List<UserDto> users);

    /**
     * 根据Id查询用户
     *
     * @param id
     * @return
     */
    RestResult getUserById(Integer id);

    /**
     * 根据ID更新用户信息
     *
     * @param user
     * @return
     */
    RestResult updateUserById(UserDto user);

    /**
     * 批量更新用户
     *
     * @param users
     * @return
     */
    RestResult updateUsersById(List<UserDto> users);

    /**
     * 更新用户
     *
     * @param user
     * @return
     */
    RestResult updateUser(UserDto user);

    /**
     * 批量保存或更新用户
     *
     * @param users
     * @return
     */
    RestResult saveOrUpdateUsers(List<UserDto> users);

    /**
     * 根据Id查询用户
     *
     * @param id
     * @return
     */
    RestResult getUesrByParam(Integer id);

    /**
     * 根据ids查询用户列表
     *
     * @param ids
     * @return
     */
    RestResult getUsersByIds(List<Integer> ids);

    /**
     * 批量保存用户 自写sql
     *
     * @param users
     * @return
     */
    RestResult saveUsers2(List<UserDto> users);
}
